# 2025.04.29力扣网刷题
# 等差三元组的数目——数组、哈希表、双指针、枚举——简单
# 给你一个下标从 0 开始、严格递增 的整数数组 nums 和一个正整数 diff 。如果满足下述全部条件，则三元组(i, j, k) 就是一个 等差三元组 ：
# i < j < k ，
# nums[j] - nums[i] == diff 且
# nums[k] - nums[j] == diff
# 返回不同 等差三元组 的数目。
# 示例 1：
# 输入：nums = [0, 1, 4, 6, 7, 10], diff = 3
# 输出：2
# 解释：
# (1, 2, 4) 是等差三元组：7 - 4 == 3 且 4 - 1 == 3 。
# (2, 4, 5) 是等差三元组：10 - 7 == 3 且 7 - 4 == 3 。
# 示例 2：
# 输入：nums = [4, 5, 6, 7, 8, 9], diff = 2
# 输出：2
# 解释：
# (0, 2, 4) 是等差三元组：8 - 6 == 2 且 6 - 4 == 2 。
# (1, 3, 5) 是等差三元组：9 - 7 == 2 且 7 - 5 == 2 。
# 提示：
# 3 <= nums.length <= 200
# 0 <= nums[i] <= 200
# 1 <= diff <= 50
# nums 严格 递增

class Solution(object):
    def arithmeticTriplets1(self, nums, diff):
        """
        :type nums: List[int]
        :type diff: int
        :rtype: int
        """
        hash = [0] * 301
        for num in nums:
            hash[num] += 1
        ans = 0
        for i in range(nums[0], nums[-1]):
            a, b, c = i, i + diff, i + 2 * diff
            if hash[a] and hash[b] and hash[c]:
                ans += 1
        return ans


    def arithmeticTriplets(self, nums, diff):
        """
        :type nums: List[int]
        :type diff: int
        :rtype: int
        """
        ans = 0
        for num in nums:
            num1 = num + diff
            num2 = num + 2 * diff
            if num1 in nums and num2 in nums:
                ans += 1
        return ans

if __name__ == '__main__':
    nums = [0, 1, 4, 6, 7, 10]
    diff = 3
    print(Solution().arithmeticTriplets(nums, diff))